package com.foreknow.demo23;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

/**
 *  1    Java         33.45     50
 *  2    NodeJS       55.30     150
 *  3    AngularJS    45.50     220
 *
 *  请输入图书的编号：2
 *  请输入购买的数量：1
 *  请继续购买图书
 *  请输入图书的编号：3
 *  请输入购买的数量：2
 *  请继续购买图书
 *  请输入图书的编号：1
 *  请输入购买的数量：1
 *
 *  订单的编号：0001
 *  订单的总额：456.34
 *
 *
 *  需要创建一个订单项列表： OrderItem[]
 *  NodeJS----55.30-------1
 *  AngularJS----45.50-----2
 *  Java-----33.45----1
 *
 *
 *  分析：
 *  1.所需要的类   Book图书类   Order订单类  OrderItOrderItem订单项类  Test测试类
 *  2.在测试类中我们需要做什么？
 *  2.1 输出图书的信息
 *      public void outBooks(Book[] books){}
 *  2.2 用户购买图书
 *      public Order buy(Book[] books){}
 *  2.3 输出订单的信息
 *      public void showOrderInfo(Order order){}
 *
 */
public class Test {
  public void outBooks(List<Book> books){
    //输出Book对象的信息
    for(int i = 0;i<books.size();i++){
      Book book = books.get(i);
      System.out.println(book.getPid()+" "+book.getPname()+" "+book.getPrice()+" "+book.getStorage());
    }
  }

  public Order buy(List<Book> books){
    Scanner input = new Scanner(System.in);
    //下一个订单
    Order order = new Order("00001");
    for(int i = 0;i<3;i++){
      System.out.println("请输入图书的编号选择图书：");
      int cno = input.nextInt();
      System.out.println("请输入购买的数量");
      int pnum = input.nextInt();
      //创建一个订单项对象
      OrderItem item = new OrderItem(books.get(i).getPname(),books.get(i).getPrice(),pnum);
      //将以上的OrderItem对象添加到OrderItem[] items订单项列表中
      order.setItems(item);
      System.out.println("请继续购买图书");
    }
    return order;
  }

  public void showOrderInfo(Order order){
    //1.输出订单的编号
    System.out.println("订单的编号为："+order.getOrderId());
    //2.如何获取到Order对象中的数组列表
    List<OrderItem> items = order.getItems();
    System.out.println("-------------------------------------------");
    for(int i = 0;i<items.size();i++){
      OrderItem oItem = items.get(i);
      System.out.println(oItem.getPname()+" "+oItem.getNum()+" "+oItem.getPrice());
    }
    System.out.println("-------------------------------------------");
    System.out.println("订单的总额为："+order.getTotal());
  }

  public static void main(String[] args) {
    Test test = new Test();
    //创建一个Book类型的数组
    List<Book> books = new ArrayList<>();
    //创建三个Book对象并将这些对象保存到数组中
    Book book1 = new Book(1,"Java",33.45,50);
    Book book2 = new Book(2,"NodeJS",55.30,150);
    Book book3 = new Book(3,"AngularJS",45.50,220);

    books.add(book1);
    books.add(book2);
    books.add(book3);
    //调用输出图书信息的方法
    test.outBooks(books);

    //调用购买图书的方法
    Order order = test.buy(books);

    //调用输出订单信息的方法
    test.showOrderInfo(order);
  }
}
